#ifndef ENEMY_HEADER
#define ENEMY_HEADER

#include "AbstractClasses\AI.h"

class Enemy: public AI{
public:
	Enemy(int, std::string);
	~Enemy();
	virtual void draw() = 0;
	virtual void actualUpdate(unsigned long long timePassed) = 0;

	virtual void reset() = 0;

	virtual int getType() = 0;
protected:
	enum actions {LEFT, RIGHT, UP, DOWN, SHOOT};
	void createShot();
private:
	ORIENTATION _orientation;
	VECTOR _translationvector;
	
	virtual void sense() = 0;						//Sense the environment
	virtual void reason() = 0;						//Reason about the situation
	void act(int action);							//Do an action (out of possibleActions)
	virtual float evaluate(POINT3D) = 0;			//Evaluate the current situation
	POINT3D simulateMove(POINT3D, int);				//simulates a move(it returns the new position after a certain action is done on an old position)	
};
#endif